package com.equipment;

import java.util.NoSuchElementException;
import android.annotation.SuppressLint;
import com.util.EncodingUtil;

/**
 * BE设备开关命令
 *
 * @author juli
 *
 */
@SuppressLint("DefaultLocale")
public class WAVELOGResponse {
	// 串口帧序列号
	private String rsctl = "00";
	// 长度
	private String Length = "";
	// 代码类型
	private String code = "DF";
	// 拓展子码
	private String subCode = "BE";
	// 异或校验值
	private String bcc = "";

	private String Status = "";// 0x00：正确执行，非0执行失败

	/**
	 * 接受解析激活OBU响应幀BB
	 *
	 * @param context
	 * @return
	 */
	public ActivateOBUResponse analysiss(String context)
			throws NoSuchElementException {
		// 55AA060033DFBB00121101090940001600BEA94138383838380000000000011117101101071623000000278000000000000000000000000000F9
		ActivateOBUResponse ar = null;
		// 判断是否是BB指令
		if (!"BE".equals(context.substring(12, 14).toUpperCase())) {
			throw new NoSuchElementException("接受类型错误");
		}
		// 判断状态是否成功
		if (!context.substring(14, 16).equals("00")) {
			throw new NoSuchElementException("开关打开失败");
		}
		// 截取到BCC校验值 需要判断校验是否相等
		bcc = context.substring(context.length() - 2).toUpperCase();
		// 截取到发送的数据(总长度-2个字节计算到数据的最后位置)
		String str = context.substring(4, context.length() - 2);
		// 得到比对校验
		str = EncodingUtil.yihuo(EncodingUtil.change(str)).toUpperCase();
		// 判断校验是否一致
		if (!str.equals(bcc)) {
			throw new NoSuchElementException("异或错误");
		}
		// 没有问题就把数据封装到对象中
		ar = new ActivateOBUResponse();
		// 解析串口帧序列号
		rsctl = context.substring(4, 6);
		ar.setRsctl(rsctl);
		// 解析长度
		Length = context.substring(6, 10);
		ar.setLength(Length);
		// 解析代码类型
		code = context.substring(10, 12);
		ar.setCode(code);
		// 解析拓展子代码
		subCode = context.substring(12, 14);
		ar.setSubCode(subCode);
		// 截取状态
		Status = context.substring(14, 16);
		ar.setStatus(Status);

		return ar;
	}
}
